When the data output values of an analog-to-digital converter (ADC) are graphed with respect to the voltage input values that gave rise to those data output values, a transfer function of the ADC is obtained. The transfer function often differs from an ideal linear transfer function in that the transfer function may have a DC offset, may have gain error, and may exhibit non-linearity. There are many known and conventional numerical analysis techniques such as linear approximation for changing the data output values of an ADC to make the effective transfer function of the ADC system closer to the ideal transfer function. Another technique involves a lookup table. For each data output value that is output from the ADC, a substitute data output value is stored where the substitute data output value satisfies the ideal transfer function. When the analog-to-digital converter outputs a data output value, the lookup table is consulted and the substitute data output value is substituted for the data output value output by the ADC. DC offset, gain error and non-linearity are corrected in one lookup operation. This solution is flexible, works well and is suitable for many applications. Some ADC applications, however, are extremely cost sensitive. In such low-cost ADC applications, providing a large enough memory to store the lookup table may be undesirably expensive or even prohibitively expensive. In such low-cost ADC applications, providing program memory space to store an involved linear approximation program is undesirable.